package com.baomidou.springwind.common;

import java.io.File;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.aspectj.weaver.Member;

import com.baomidou.kisso.SSOHelper;
import com.baomidou.kisso.SSOToken;

/**
 * koumiba
 * 2017-2017年3月28日
 */
public class HoorayosHelper {
	
	public static Map<String,String> getErrorCodeMap(){
		Map<String,String> errorCode = new HashMap<String,String>();
		errorCode.put("noLogin", "1000");
		errorCode.put("noAdmin", "1001");
		errorCode.put("noPermissions", "1002");
		return errorCode;
	}
	/**
	 * 根据错误类型，返回错误代码
	 * @param type
	 * @return String
	 * koumiba
	 * 2017年3月30日
	 */
	public static String getErrorCode(String type){
		Map<String,String> errorCode = getErrorCodeMap();
		return errorCode.get(type);
	}
	 /**
	  * 获取用头像（默认头像是 "img/ui/avatar_"+size+".jpg"）
	  * 
	  * koumiba
	  * 2017-2017年3月25日
	  */
	public static String getAvatar(HttpServletRequest request, int memberId, String s) {		
		int size = 24;
		if (s == null || s.equals("s"))
			size = 24;
		else if (s.equals("n"))
			size = 48;
		else
			size = 120;
		
		//Integer memberId = getMemberId(request);
		String avatar = "/static/img/ui/avatar_" + size + ".jpg";
		File avatarFile = new File("/static/uploads/member/" + memberId + "/avatar/"
				+ size + ".jpg");
		if (avatarFile.exists()) {
			avatar = "/static/uploads/member/" + memberId + "/avatar/" + size + ".jpg";
		}

		return avatar;
	}
	/**
	 * 获取当前登陆用户的id,如果不存在则返回0
	 * @return Integer
	 * koumiba
	 * 2017-2017年3月25日
	 */
	public static Integer getMemberId(HttpServletRequest request){
		SSOToken st = SSOHelper.getToken(request);
		if (st == null) {
			/* 未登录 */
			return 0;	
		}
		return st.getId().intValue();		
	}
	/**
	 * 
	 * @return Boolean
	 * koumiba
	 * 2017-2017年3月25日
	 */
	public static Boolean checkLogin(HttpServletRequest request){
		SSOToken st = SSOHelper.getToken(request);
		if (st == null) {
			return false;	
		}
		return true;
	}
	/**
	 * 判断一个用户是否是管理员
	 * @param user
	 * @return Boolean
	 * koumiba
	 * 2017年4月17日
	 */
	public static Boolean checkAdmin(com.baomidou.springwind.entity.Member user){
		if(user != null && user.getType() == 1){
			return true;
		}
		return false;
	}
	/**
	 * 判断一个用户是否拥有权限
	 * @param appsId： 用户的权限集，用逗号分隔
	 * @param appId： 需要检测的权限id
	 * @return Boolean
	 * koumiba
	 * 2017年4月17日
	 */
	public static Boolean checheckPermissions(String appsId, String appId){
		List appIdList = Arrays.asList(appsId.split(","));
		if(appIdList.contains(appId)){
			return true;
		}
		return false;		
	}
	/**
	 * 从目标数组中删除一个指定的元素
	 * @param target： 目标数组
	 * @param v ： 要被删除的元素
	 * @return String 以“,”分隔的字符串
	 * koumiba
	 * 2017年4月4日
	 */
	public static String removeItem(String[] target, String v){
		List<String> tempList = new ArrayList<String>();
		tempList.clear();
		for(int i=0; i<target.length; i++){
			tempList.add(i, target[i]);
		}
		tempList.remove(v);
		return org.apache.commons.lang.StringUtils.join(tempList,",");
	}
	/**
	 * 从目标数组中删除指定位置的元素
	 * @param target： 目标数组
	 * @param index ： 要被删除元素的位置
	 * @return String 以“,”分隔的字符串
	 * koumiba
	 * 2017年4月4日
	 */
	public static String removeItem(String[] target, int index){
		List<String> tempList = new ArrayList<String>();
		tempList.clear();
		for(int i=0; i<target.length; i++){
			tempList.add(i, target[i]);
		}
		tempList.remove(index);
		return org.apache.commons.lang.StringUtils.join(tempList,",");
	}
	/**
	 * 在目标数组中插入一个指定的元素
	 * @param target：目标数组
	 * @param index：指定位置(-1时在最后添加)
	 * @param v
	 * @return String
	 * koumiba
	 * 2017年4月4日
	 */
	public static String insertItem(String[] target, int index, String v){
		List<String> tempList = new ArrayList<String>();
		for(int i=0; i<target.length; i++){
			if(i == index){
				tempList.add(v);
				tempList.add(target[i]);
			}else{
				tempList.add(target[i]);
			}			
			if(i == target.length-1 && i<index){
				tempList.add(v);
			}
		}
		if(index == -1){
			tempList.add(v);
		}
		return org.apache.commons.lang.StringUtils.join(tempList,",");
	}
	/**
	 * 判断文件是否以.css为后缀
	 * @param fileName
	 * @return Boolean
	 * koumiba
	 * 2017年4月4日
	 */
	public static Boolean isEndWithCss(String fileName){
		if(fileName.endsWith(".css")) return true;
		return false;
	}
	public static String getFileBaseName(String filename){
		String[] temp = filename.split("\\.");
		if(temp.length == 2)
			return temp[0];
		return "";
	}
}

